import numpy as np

n_results = 2
# bm25_scores 这是一个NumPy数组，形状为 (N,)，其中N是文档数量，每个元素表示对应文档的BM25相关性分数（值越大表示越相关）。
bm25_scores = np.array([2.1, 0.5, 3.3, 1.8])
# argsort() 返回的是数组值从小到大排序后的原始索引（不是值本身）。
# 对 [2.1, 0.5, 3.3, 1.8] 排序后得到值顺序 [0.5, 1.8, 2.1, 3.3]，对应的原始索引是 [1, 3, 0, 2]
sorted_indices = np.argsort(bm25_scores)
print(sorted_indices)
# [start:stop:step]  当 step 设为 -1 时，表示从后向前按步长1遍历序列，因此会反转整个序列。
# 对排序后的索引进行逆序操作，将结果从升序变为降序（即分数从高到低）。
# 上一步的 [1, 3, 0, 2] 逆序后变为 [2, 0, 3, 1]（对应分数 [3.3, 2.1, 1.8, 0.5]）。
reverse_indices = sorted_indices[::-1]
print(reverse_indices)
# 对逆序后的索引进行切片操作，只保留前n_results个索引。
# 上一步的 [2, 0, 3, 1] 切片后变为 [2, 0]（对应分数 [3.3, 2.1]）。
top_indices = reverse_indices[:n_results]
# 打印最终结果，即分数最高的前n_results个文档的索引。
print(top_indices)
